#!/usr/bin/env python
#-------------------------------python--------------------------gas.py--#
#                                                                       #
#                                 Gas                                   #
#                                                                       #
#--Vittorio De Franceschi--Daniele Zambelli----------------------2002---#

from math import pi, sin, cos
from random import randrange, random
from pycart import Plane

#------------
# Molecola
#------------
cxmi=50
cxma=100
cymi=50
cyma=150
larg=2
#v=2.0

class Bombola:
  def __init__(self, cxmi, cxma, cymi, cyma, massa=100):
    canvas.create_rectangle(cxmi, cymi, cxma, cyma)
    self.gas=[]
    for i in range(massa):
      self.gas.append(Molecola(randrange(cxmi, cxma-1), randrange(cymi, cyma-1),
                               1, random()*pi, 'red'))

  def anima(self):
    for i in range(1000):
      for m in self.gas: m.muovi()
      canvas.update()
      piano.after(0)

class Molecola:
  def __init__(self, x=0, y=0, velocita=0, angolo=0.0, colore='black'):
    self.x = x
    self.y = y
    self.velocita=velocita
    self.angolo = angolo 
    self.vx = velocita*cos(angolo)
    self.vy = velocita*sin(angolo)
    self.colore=colore
    self.o=canvas.create_line(self.x, self.y, self.x+larg, self.y+larg,
                              width=larg,
                              fill=self.colore)

  def muovi(self):
    ox=self.x; oy=self.y
    self.x+=self.vx; self.y+=self.vy
    if self.x<cxmi:
      self.vx=-self.vx
##      self.x=cxmi+cxmi-self.x 
##      self.angolo = (pi - self.angolo)
##      self.vx = self.velocita*cos(self.angolo)
##      self.vy = -self.velocita*sin(self.angolo);
    elif self.x>=cxma:
      self.vx=-self.vx
##      self.x=cxma+cxma-self.x 
##      self.angolo = (pi - self.angolo)
##      self.vx = self.velocita*cos(self.angolo)
##      self.vy = -self.velocita*sin(self.angolo);
    if self.y<cymi:
      self.vy=-self.vy
##      self.y=cymi+cymi-self.y 
##      self.angolo = -self.angolo
##      self.vx = self.velocita*cos(self.angolo)
##      self.vy = -self.velocita*sin(self.angolo);
    elif self.y>=cyma:
      self.vy=-self.vy;
##      self.y=cyma+cyma-self.y
##      self.angolo = -self.angolo
##      self.vx = self.velocita*cos(self.angolo)
##      self.vy = -self.velocita*sin(self.angolo);
    canvas.coords(self.o, self.x, self.y, self.x+larg, self.y+larg)
    
piano=Plane("Gas", 150, 200)
canvas=piano.getcanvas()
b=Bombola(cxmi, cxma+larg, cymi, cyma+larg)
b.anima()
piano.mainloop()


